﻿using System;
using System.Text.Json.Serialization;

namespace WeChatBotSDK.Models
{
    /// <summary>
    /// 微信的响应数据。
    /// </summary>
    public record WeChatResponse<T> where T : class, new()
    {
        /// <summary>
        /// 响应代码。
        /// </summary>
        [JsonPropertyName("code")]
        public int Code { get; set; } = -1;

        /// <summary>
        /// 返回的消息。
        /// </summary>
        [JsonPropertyName("msg")]
        public string Msg { get; set; } = "";

        /// <summary>
        /// 返回的结果对象。
        /// </summary>
        [JsonPropertyName("result")]
        public T Result { get; set; } = new T();

        /// <summary>
        /// 微信 ID。
        /// </summary>
        [JsonPropertyName("wxid")]
        public string Wxid { get; set; } = "";

        /// <summary>
        /// HTTP 监听端口。
        /// </summary>
        [JsonPropertyName("port")]
        public int Port { get; set; }

        /// <summary>
        /// 进程 ID。
        /// </summary>
        [JsonPropertyName("pid")]
        public int Pid { get; set; }

        /// <summary>
        /// 标识信息。
        /// </summary>
        [JsonPropertyName("flag")]
        public string Flag { get; set; } = "";

        /// <summary>
        /// 时间戳。
        /// </summary>
        [JsonPropertyName("timestamp")]
        public string Timestamp { get; set; } = "";

        /// <summary>
        /// 响应是否成功。
        /// </summary>
        [JsonIgnore(Condition = JsonIgnoreCondition.Always)] 
        public bool IsSuccess { get { return Code == 200; } }
    }

    /// <summary>
    /// 表示二维码结果对象。
    /// </summary>
    public record QRCodeResult
    {
        /// <summary>
        /// 二维码链接地址。
        /// </summary>
        [JsonPropertyName("qrCode")] 
        public string QrCode { get; set; }= "";
    }
    /// <summary>
    /// 表示微信状态结果的具体内容。
    /// </summary>
    public record CheckWeChatResult
    {
        /// <summary>
        /// 昵称
        /// </summary>
        [JsonPropertyName("nick")]
        public string Nick { get; set; }

        /// <summary>
        /// 接收消息数
        /// </summary>
        [JsonPropertyName("recv")]
        public long Recv { get; set; }

        /// <summary>
        /// 已运行时间
        /// </summary>
        [JsonPropertyName("runTime")]
        public string RunTime { get; set; }

        /// <summary>
        /// 发送消息数
        /// </summary>
        [JsonPropertyName("send")]
        public long Send { get; set; }

        /// <summary>
        /// 开始运行时间, 2024年5月23日20时38分12秒
        /// </summary>
        [JsonPropertyName("startTime")]
        public string StartTime { get; set; }

        /// <summary>
        /// 开始运行10位时间戳
        /// </summary>
        [JsonPropertyName("startTimeStamp")]
        public string StartTimeStamp { get; set; }

        /// <summary>
        /// wxid
        /// </summary>
        [JsonPropertyName("wxid")]
        public string Wxid { get; set; }

        /// <summary>
        /// 微信号
        /// </summary>
        [JsonPropertyName("wxNum")]
        public string WxNum { get; set; }
    }
    public record DeleteFriendResult
    {
        /// <summary>
        /// 开始时间戳。
        /// </summary>
        [JsonPropertyName("startTimeStamp")]
        public string StartTimeStamp { get; set; }

        /// <summary>
        /// 开始时间。
        /// </summary>
        [JsonPropertyName("startTime")]
        public string StartTime { get; set; }

        /// <summary>
        /// 运行时长。
        /// </summary>
        [JsonPropertyName("runTime")]
        public string RunTime { get; set; }

        /// <summary>
        /// 接收到的消息数量。
        /// </summary>
        [JsonPropertyName("recv")]
        public int Recv { get; set; }

        /// <summary>
        /// 发送的消息数量。
        /// </summary>
        [JsonPropertyName("send")]
        public int Send { get; set; }

        /// <summary>
        /// 微信号。
        /// </summary>
        [JsonPropertyName("wxNum")]
        public string WxNum { get; set; }

        /// <summary>
        /// 昵称。
        /// </summary>
        [JsonPropertyName("nick")]
        public string Nick { get; set; }

        /// <summary>
        /// 微信 ID。
        /// </summary>
        [JsonPropertyName("wxid")]
        public string Wxid { get; set; }
    }
    /// <summary>
    /// 群成员信息。
    /// </summary>
    public record GroupMemberResult
    {
        /// <summary>
        /// 成员的微信 ID。
        /// </summary>
        [JsonPropertyName("wxid")]
        public string Wxid { get; set; }

        /// <summary>
        /// 成员在群中的昵称。
        /// </summary>
        [JsonPropertyName("groupNick")]
        public string GroupNick { get; set; }
    }

    /// <summary>
    /// 登录结果的详细信息
    /// </summary>
    public record LoginResult
    {
        /// <summary>
        /// 登录状态（使用枚举表示）
        /// </summary>
        public LoginStatus Status { get; set; }

        /// <summary>
        /// 登录状态说明
        /// </summary>
        public string StatusMsg { get; set; }
    }

}
